package com.example.egghttp.retrofit;

import com.example.egghttp.retrofit.beans.BOb;
import com.example.egghttp.retrofit.beans.banner.AccountInfoList;
import com.example.egghttp.retrofit.beans.banner.Actis;
import com.example.egghttp.retrofit.beans.banner.ActrepList;
import com.example.egghttp.retrofit.beans.banner.AddreddList;
import com.example.egghttp.retrofit.beans.banner.AddressLists;
import com.example.egghttp.retrofit.beans.banner.BannerList;
import com.example.egghttp.retrofit.beans.banner.BargainDatailResp;
import com.example.egghttp.retrofit.beans.banner.BargainRankListRES;
import com.example.egghttp.retrofit.beans.banner.Buyinfor;
import com.example.egghttp.retrofit.beans.banner.CCLResponce;
import com.example.egghttp.retrofit.beans.banner.CartPlaceOrderResponce;
import com.example.egghttp.retrofit.beans.banner.CatIS;
import com.example.egghttp.retrofit.beans.banner.CategoryList;
import com.example.egghttp.retrofit.beans.banner.DelData;
import com.example.egghttp.retrofit.beans.banner.ExperienceLists;
import com.example.egghttp.retrofit.beans.banner.GoodCutList;
import com.example.egghttp.retrofit.beans.banner.GoodLoveList;
import com.example.egghttp.retrofit.beans.banner.JoinREsult;
import com.example.egghttp.retrofit.beans.banner.LogInfor;
import com.example.egghttp.retrofit.beans.banner.MyStartList;
import com.example.egghttp.retrofit.beans.banner.OffcerDetail;
import com.example.egghttp.retrofit.beans.banner.OrrderList;
import com.example.egghttp.retrofit.beans.banner.PayWeixinResponce;
import com.example.egghttp.retrofit.beans.banner.PerProxyinfor;
import com.example.egghttp.retrofit.beans.banner.ProdictCutDetailContainer;
import com.example.egghttp.retrofit.beans.banner.ProdictDetailContainer;
import com.example.egghttp.retrofit.beans.banner.ReportsPic;
import com.example.egghttp.retrofit.beans.banner.ResultResponce;
import com.example.egghttp.retrofit.beans.banner.ResultsData;
import com.example.egghttp.retrofit.beans.banner.SearchInfor;
import com.example.egghttp.retrofit.beans.banner.ShopInfo;
import com.example.egghttp.retrofit.beans.banner.SkuList;
import com.example.egghttp.retrofit.beans.banner.StartACtivityResponce;
import com.example.egghttp.retrofit.beans.banner.TeamResponce;
import com.example.egghttp.retrofit.beans.banner.VerifyCode;
import com.example.egghttp.retrofit.params.ADDOffcerOrder;
import com.example.egghttp.retrofit.params.AddreddEditRequest;
import com.example.egghttp.retrofit.params.AddreddIDRequest;
import com.example.egghttp.retrofit.params.BarHagRequest;
import com.example.egghttp.retrofit.params.BargainDatailRequest;
import com.example.egghttp.retrofit.params.CartConFirmListsRequest;
import com.example.egghttp.retrofit.params.CartConFirmPinListsRequest;
import com.example.egghttp.retrofit.params.CartPlaceOrder;
import com.example.egghttp.retrofit.params.ClientNotifyRequest;
import com.example.egghttp.retrofit.params.CollageDirectBuyRequest;
import com.example.egghttp.retrofit.params.CollageOrderCollectRequest;
import com.example.egghttp.retrofit.params.CollageOrderLogRequest;
import com.example.egghttp.retrofit.params.JoinExpRequest;
import com.example.egghttp.retrofit.params.OrderSn;
import com.example.egghttp.retrofit.params.PageRequest;
import com.example.egghttp.retrofit.params.RegisterMobileRequest;
import com.example.egghttp.retrofit.params.SendVerifyCodeRequest;

import java.util.Map;

import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * Created by tse on 2017/10/9.
 */


public interface AdService {


    @GET("shop/shop-infos")
    Observable<BOb<ShopInfo>> shopShopinfos(@Query("id") String id);


    @GET("address/region-list")
    Observable<BOb<AddreddList>> addressRegionList(@Query("region_id") String region_id);


    @GET("order/order-lists")
    Observable<BOb<OrrderList>> orderLists(@Query("order_type") String order_type, @Query("page") String page, @Query("activity_type") String activity_type);


    @GET("banner/banner-lists")
    Observable<BOb<BannerList>> homebanner(@Query("zee") String te, @Query("newsId") String newsId);

    @GET("goods/details")
    Observable<BOb<ProdictDetailContainer>> goodDetail(@Query("id") String id, @Query("tid") String tid);


    @POST("goods/cate-goods")
    Observable<BOb<GoodLoveList>> goodsCateGoods(@Body CatIS body);

    @GET("goods/second-kill")
    Observable<BOb<GoodLoveList>> goodsSecondKill();


    @GET("bargain/contribution-lists")
    Observable<BOb<BargainRankListRES>> bargainContributionLists(@Query("bargain_id") String bargain_id, @Query("goods_id") String goods_id, @Query("bstart_id") String bstart_id);


    @GET("bargain/ranking-lists")
    Observable<BOb<BargainRankListRES>> bargainRankingLists(@Query("bargain_id") String bargain_id, @Query("goods_id") String goods_id, @Query("bstart_id") String bstart_id);

    @GET("goods/over-flow")
    Observable<BOb<GoodLoveList>> goodsOverFlow();


    @GET("goods/everybodys")
    Observable<BOb<GoodLoveList>> goodsEverybodys();


    @GET("goods/star-love")
    Observable<BOb<GoodLoveList>> goodsStarLove();

    @GET("banner/act-rep")
    Observable<BOb<ActrepList>> actRep();

    @POST("experience/details")
    Observable<BOb<OffcerDetail>> experienceDetails(@Body Actis body);

    @GET("collage/sku-list")
    Observable<BOb<SkuList>> collageSkuList(@Query("pin_id") String id);//SKU 列表

    @GET("collage/sku-list")
    Observable<BOb<ProdictCutDetailContainer>> collageSkuListLikePin(@Query("pin_id") String id);//SKU 列表

    @GET("bargain/goods-spec")
    Observable<BOb<ProdictCutDetailContainer>> bargainGoodsSpec(@Query("bargain_id") String bargain_id, @Query("goods_id") String goods_id);

    @GET("banner/reports-pic")
    Observable<BOb<ReportsPic>> reportPic();

    @GET("goods/loves")
    Observable<BOb<GoodLoveList>> goodLoveList();


    @GET("goods/worlds")
    Observable<BOb<GoodLoveList>> goodWorldsList();

    @GET("goods/last-goods")
    Observable<BOb<GoodLoveList>> goodLastList();

    @GET("collage/pending-collage")
    Observable<BOb<TeamResponce>> collagePendingCollage(@Query("pin_id") String pin_id, @Query("page") String page, @Query("page_limit") String page_limit, @Query("show_type") String show_type);

    @GET("category/cate-list")
    Observable<BOb<CategoryList>> categoryCateList();

    @POST("user/account")
    Observable<BOb<AccountInfoList>> userAccount();

    @POST("sms/send-verifycode")
    Observable<BOb<VerifyCode>> sendVerifycode(@Body SendVerifyCodeRequest body);

    @POST("collage/direct-buy")
    Observable<BOb<Buyinfor>> collageDirectBuy(@Body CollageDirectBuyRequest body);

    @POST("collage/group-buy")
    Observable<BOb<Buyinfor>> collageGroupBuy(@Body CollageDirectBuyRequest body);


    @POST("register/mobile")
    Observable<BOb<VerifyCode>> registerMobile(@Body RegisterMobileRequest body);


    @POST("auth-login/mobile")
    Observable<BOb<VerifyCode>> authloginMobile(@Body RegisterMobileRequest body, @Header("access-key") String accesskey);


    @POST("experience/lists")
    Observable<BOb<ExperienceLists>> experienceLists();//规格参数；如：1或array(1,2,3)或1_2_3都可以


    @POST("experience/join-exp")
    Observable<BOb<JoinREsult>> experienceJoinexp(@Body JoinExpRequest body);

    @POST("bargain/lists")
    Observable<BOb<GoodCutList>> bargainLists();


    @POST("bargain/details")
    Observable<BOb<BargainDatailResp>> bargainDetails(@Body BargainDatailRequest body);

    @POST("address/lists")
    Observable<BOb<AddressLists>> addressLists();

    @POST("address/edit")
    Observable<BOb<ResultsData>> addressEdit(@Body AddreddEditRequest body);

    @POST("address/del")
    Observable<BOb<DelData>> addressDel(@Body AddreddIDRequest body);

    @POST("collage/order-log")
    Observable<BOb<LogInfor>> collageOrderLog(@Body CollageOrderLogRequest body);

    @POST("collage/collect")
    Observable<BOb<ResultsData>> collageCollect(@Body CollageOrderCollectRequest body);

    @POST("personal/is-proxy")
    Observable<BOb<PerProxyinfor>> personalISProxy();

    @GET("experience/search-pro")
    Observable<BOb<SearchInfor>> experienceSearchPro();

    //提交订单接口
    @POST("cart/place-order")
    Observable<BOb<CartPlaceOrderResponce>> cartPlaceOrder(@Body CartPlaceOrder body);

    @POST("bargain/haggling")
    Observable<BOb<StartACtivityResponce>> bargainHaggling(@Body BarHagRequest body);

    //提交订单接口
    @POST("experience/add")
    Observable<BOb<ResultResponce>> experienceAdd(@Body ADDOffcerOrder body);    //提交订单接口

    @POST("cart/confirm-lists")
    Observable<BOb<CCLResponce>> cartConfirmLists(@Body CartConFirmListsRequest body);//购买商品确认清单

    @POST("cart/team-confirm-lists")
    Observable<BOb<CCLResponce>> teamConfirmLists(@Body CartConFirmPinListsRequest body);//购买商品确认清单

    @FormUrlEncoded
    @POST("experience/add")
    Observable<BOb<ResultResponce>> updateProfile(@FieldMap Map<String, Object> map);

    //微信支付
    @POST("pay/weixin")
    Observable<BOb<PayWeixinResponce>> payWeixin(@Body OrderSn body);

    //我的砍价
    @POST("bargain/my-bargain-lists")
    Observable<BOb<MyStartList>> bargainmyBargainLists(@Body PageRequest body);


    //支付回调-客户端
    @POST("pay/client-notify")
    Observable<BOb<PayWeixinResponce>> clientNotify(@Body ClientNotifyRequest body);


}
